/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica;

import Oracle.OracleMethods;
import java.sql.*;
import java.util.ArrayList;
import kioscos.Pedido;

/**
 *
 * @author odmaestrams
 */
public class CreacionInformacion {
    
    public static int crearFacturacionPedido(ArrayList<Pedido> arrayPedidos, Integer montoTotalPedidos) throws SQLException {
       
        Connection con = OracleMethods.oracleConnection();
        Statement stmt = con.createStatement();
        ResultSet rs = null;
        
        int factura_PK = 0, result = 0, det_ped_PK = 0;

        result = stmt.executeUpdate("INSERT INTO ao_factura(factura_PK, fecha_factura, monto, descuento, rif_FK) "
                        + "VALUES (factura_PK.nextval, TO_DATE(" + "'" + arrayPedidos.get(0).getFechaCreacion() + "'," + "'dd/mm/yyyy'), "
                        + montoTotalPedidos + ", " + 0 + ", " + "'" + arrayPedidos.get(0).getRifCliente() + "'" + ")");

        rs = stmt.executeQuery("SELECT MAX(factura_PK) FROM ao_factura");

        if (rs.next()){
            factura_PK = rs.getInt(1);
        }
            
        for (int i = 0; i < arrayPedidos.size(); i++){
            if (result != 0){
                rs = stmt.executeQuery("SELECT det_ped_PK FROM ao_detalle_pedido "
                        + "WHERE rif_PK_FK = " + "'" + arrayPedidos.get(i).getRifCliente() + "' "
                        + "AND pedido_PK_FK = " + arrayPedidos.get(i).getNroPedido());
                if (rs.next())
                    det_ped_PK = rs.getInt(1);
                
                result = stmt.executeUpdate("INSERT INTO ao_detalle(detalle_PK, factura_PK_FK, monto, descuento, rif_FK, pedido_FK, det_ped_FK) "
                        + "VALUES(detalle_PK.nextval, " + factura_PK + ", " + arrayPedidos.get(i).getCostoPedido() + ", " + 0 + ", "
                        + "'" + arrayPedidos.get(i).getRifCliente() + "', " + arrayPedidos.get(i).getNroPedido() + ", " + det_ped_PK + ")");
            }
           
        }
        

        
        
        return result;
    }
    
    public static int crearPedido(Integer nroMaterial, Integer nroTamano, Integer cantidad, String fechaCreacion, 
            String fechaEntrega, String rifCliente, Integer montoTotal) throws SQLException {
        
        Connection con = OracleMethods.oracleConnection();
        Statement stmt = con.createStatement();
        ResultSet rs = null;
        
        int result = 0, nroPedido = 0, valla_material_PK = 0;
        
        result = stmt.executeUpdate("INSERT INTO ao_pedido(pedido_PK, rif_PK_FK, fecha_pedido, fecha_entrega) "
                + "VALUES (pedido_PK.nextval, " + "'" + rifCliente + "', "
                + "TO_DATE(" + "'" + fechaCreacion + "'," + "'dd/mm/yyyy'), "
                + "TO_DATE(" + "'" + fechaEntrega + "'," + "'dd/mm/yyyy'))");

        if (result != 0){
            rs = stmt.executeQuery("SELECT MAX(pedido_PK) FROM ao_pedido");
            if (rs.next())
                nroPedido = rs.getInt(1);

            rs = stmt.executeQuery("SELECT valla_material_PK FROM ao_valla_material "
                    + "WHERE valla_PK_FK = " + nroTamano + " "
                    + "AND material_PK_FK = " + nroMaterial);
            if (rs.next())
                valla_material_PK = rs.getInt(1);

            if (nroPedido != 0 && valla_material_PK != 0){
                result = stmt.executeUpdate("INSERT INTO ao_detalle_pedido(det_ped_PK, rif_PK_FK, pedido_PK_FK, cantidad, valla_material_FK, valla_FK, material_FK) "
                        + "VALUES (det_ped_PK.nextval, " + "'" + rifCliente + "', " + nroPedido + ", "
                        + cantidad + ", " + valla_material_PK + ", " + nroTamano + ", " + nroMaterial + ")");

             System.out.println("INSERT INTO ao_pedido(pedido_PK, rif_PK_FK, fecha_pedido, fecha_entrega) "
                + "VALUES (pedido_PK.nextval, " + "'" + rifCliente + "', "
                + "TO_DATE(" + "'" + fechaCreacion + "'," + "'dd/mm/yyyy'), "
                + "TO_DATE(" + "'" + fechaEntrega + "'," + "'dd/mm/yyyy'))");
        
            System.out.println("INSERT INTO ao_detalle_pedido(det_ped_PK, rif_PK_FK, pedido_PK_FK, cantidad, valla_material_FK, valla_FK, material_FK) "
                        + "VALUES (det_ped_PK.nextval, " + "'" + rifCliente + "', " + nroPedido + ", "
                        + cantidad + ", " + valla_material_PK + ", " + nroTamano + ", " + nroMaterial + ")");
                
                rs = stmt.executeQuery("SELECT MAX(pedido_PK) FROM ao_pedido");
                if (rs.next())
                    return rs.getInt(1);
            }
        }
                
        
        return 0;
    }
    
    
    public static int crearMantenimiento(String fechaMant, Integer nroKiosco, String ciEmpleado, 
            Integer nroMant, Integer horas, String montoMant) throws SQLException {
        
        Connection con = OracleMethods.oracleConnection();
        Statement stmt = con.createStatement();
        ResultSet rs = null;
        
        int factura_PK = 0, result = 0;
        
        result = stmt.executeUpdate("INSERT INTO ao_gasto(gasto_PK, kiosco_PK_FK, fecha, tipo, monto) "
                + "VALUES (gasto_PK.nextval, " + nroKiosco + ", TO_DATE(" + "'" + fechaMant + "'," + "'dd/mm/yyyy'), "
                + "'Reparacion'" + ", " + montoMant + ")");
            
        if (result != 0){
            result = stmt.executeUpdate("INSERT INTO ao_factura(factura_PK, fecha_factura, monto, descuento, rif_FK) "
                    + "VALUES (factura_PK.nextval, TO_DATE(" + "'" + fechaMant + "'," + "'dd/mm/yyyy'), "
                    + montoMant + ", " + 0 + ", " + nroKiosco + ")");
            
            rs = stmt.executeQuery("SELECT MAX(factura_PK) FROM ao_factura");
        
            if (rs.next())
                factura_PK = rs.getInt(1);
        
                if (result != 0){
                    result = stmt.executeUpdate("INSERT INTO ao_mant_kiosco(fecha_PK, kiosco_PK_FK, ci_PK_FK, mant_PK_FK, horas) "
                            + "VALUES (TO_DATE(" + "'" + fechaMant + "'," + "'dd/mm/yyyy'), "
                            + nroKiosco + ", " + "'" + ciEmpleado + "'" + ", " + nroMant + ", " + horas + ")");
                
                
                    if (result != 0){
                        result = stmt.executeUpdate("INSERT INTO ao_detalle(detalle_PK, factura_PK_FK, monto, descuento, fecha_mant_FK, kiosco_FK, mant_FK, ci_FK) "
                                + "VALUES (detalle_PK.nextval, " + factura_PK + ", " + montoMant + ", " + 0 + ", "
                                + "TO_DATE(" + "'" + fechaMant + "'," + "'dd/mm/yyyy'), " + nroKiosco + ", " + nroMant + ", " + "'" + ciEmpleado + "')");
                    }
                }
            }
        
        stmt.close();
        rs.close();
        con.close();
    
        return result;
    }
    
    public static int crearVentaKiosco(String fechaVenta, Integer nroKiosco, String rifCliente, Integer montoVenta) throws SQLException {
        
        Connection con = OracleMethods.oracleConnection();
        Statement stmt = con.createStatement();
 
        int factura_PK, result = 0;
            
        result = stmt.executeUpdate("INSERT INTO ao_factura(factura_PK, fecha_factura, monto, descuento, rif_FK) "
                + "VALUES (factura_PK.nextval, TO_DATE(" + "'" + fechaVenta + "'," + "'dd/mm/yyyy'), "
                + montoVenta + ", " + 0 + ", " + rifCliente + ")");
            
        ResultSet rs = stmt.executeQuery("SELECT MAX(factura_PK) FROM ao_factura");
        if (rs.next()){
            factura_PK = rs.getInt(1);
            
            if (result != 0){
                result = stmt.executeUpdate("INSERT INTO ao_info_venta (fechaVenta_PK, kiosco_PK_FK, rif_pk_fk, montoVenta) "
                        + "VALUES (TO_DATE(" + "'" + fechaVenta + "'," + "'dd/mm/yyyy'), " + nroKiosco + ", " 
                        + rifCliente + ", " + montoVenta + ")");
        
                if (result != 0){             
                    result = stmt.executeUpdate("INSERT INTO ao_detalle (detalle_pk, factura_pk_fk, monto, descuento, rif_fk, fecha_venta_fk, kiosco_fk) "
                            + "VALUES(detalle_pk.nextval, " + factura_PK + ", " + montoVenta + ", " + 0 + ", " 
                            + "'" + rifCliente + "', " +  "TO_DATE(" + "'" + fechaVenta + "'," + "'dd/mm/yyyy'), " + nroKiosco + ")");
                }
            }
        }
      
        stmt.close();
        rs.close();
        con.close();
        
        return result;
    }
    
    public static int crearAlquiler(String fechaInicio, String fechaFin, String posicion,
            String rifCliente, Integer formaPago, Integer servicio, Integer nroKiosco, Integer montoAlquiler, Integer descuento) throws SQLException {
        
        Connection con = OracleMethods.oracleConnection();
        Statement stmt = con.createStatement();
        
        int factura_PK, alquiler_PK = 0, result = 0;
            
        result = stmt.executeUpdate("INSERT INTO ao_factura(factura_PK, fecha_factura, monto, descuento, rif_FK) "
                + "VALUES (factura_PK.nextval, TO_DATE(" + "'" + fechaInicio + "'," + "'dd/mm/yyyy'), " 
                + montoAlquiler + ", " + descuento + ", " + rifCliente + ")");
      
        ResultSet rs = stmt.executeQuery("SELECT MAX(factura_PK) FROM ao_factura");
        if (rs.next()){
            factura_PK = rs.getInt(1);
        
                if (result != 0){
                    System.out.println("INSERT INTO ao_pago(pago_PK, factura_PK_FK, monto, fecha_pago) "
                        + "VALUES (pago_PK.nextval, " + factura_PK + ", " + montoAlquiler + ", " 
                        + "TO_DATE(" + "'" + fechaInicio + "'," + "'dd/mm/yyyy')" + ")");
                    System.out.println("INSERT INTO ao_alquiler(alquiler_PK, kiosco_PK_FK, rif_PK_FK, formapago_PK_FK, "
                            + "servicio_PK_FK, fechaInicio, fechaFin, posicion) "
                            + "VALUES (alquiler_PK.nextval, " + nroKiosco + ", " + "'" + rifCliente + "', "
                            + formaPago + ", " + servicio + ", TO_DATE(" + "'" + fechaInicio + "'," + "'dd/mm/yyyy'), "
                            + "TO_DATE(" + "'" + fechaFin + "'," + "'dd/mm/yyyy'), " + "'" + posicion + "'" + ")");
                    
                    result = stmt.executeUpdate("INSERT INTO ao_alquiler(alquiler_PK, kiosco_PK_FK, rif_PK_FK, formapago_PK_FK, "
                            + "servicio_PK_FK, fechaInicio, fechaFin, posicion) "
                            + "VALUES (alquiler_PK.nextval, " + nroKiosco + ", " + "'" + rifCliente + "', "
                            + formaPago + ", " + servicio + ", TO_DATE(" + "'" + fechaInicio + "'," + "'dd/mm/yyyy'), "
                            + "TO_DATE(" + "'" + fechaFin + "'," + "'dd/mm/yyyy'), " + "'" + posicion + "'" + ")");
                
                    rs = stmt.executeQuery("SELECT MAX(alquiler_PK) FROM ao_alquiler");
        
                    if (rs.next())
                        alquiler_PK = rs.getInt(1);
                    
                    if ((result != 0) && (alquiler_PK != 0)){   
                        System.out.println("INSERT INTO ao_detalle(detalle_PK, factura_PK_FK, monto, "
                                + "descuento, rif_FK, alquiler_FK, kiosco_FK, formapago_FK, servicio_FK) "
                                + "VALUES(detalle_pk.nextval, " + factura_PK + ", " + montoAlquiler + ", " + descuento + ", " 
                                + "'" + rifCliente + "', " + alquiler_PK + ", " + nroKiosco + ", " + formaPago + ", " + servicio + ")");
                        result = stmt.executeUpdate("INSERT INTO ao_detalle(detalle_PK, factura_PK_FK, monto, "
                                + "descuento, rif_FK, alquiler_FK, kiosco_FK, formapago_FK, servicio_FK) "
                                + "VALUES(detalle_pk.nextval, " + factura_PK + ", " + montoAlquiler + ", " + descuento + ", " 
                                + "'" + rifCliente + "', " + alquiler_PK + ", " + nroKiosco + ", " + formaPago + ", " + servicio + ")");
                    }
                }
            }
        
      
        stmt.close();
        rs.close();
        con.close();
        
        return result;
    }
    
    public static int crearFormaPago(String formaPago, String descuento) throws SQLException{
        Connection con = OracleMethods.oracleConnection();
        Statement stmt = con.createStatement();
        int resultado = stmt.executeUpdate("INSERT INTO ao_forma_pago(formaPago_PK, nombre, descuento) "
                + "VALUES (formaPago_PK.nextval, " + "'" + formaPago + "', " + "'" + descuento + "'" + ")");
        
        stmt.close();
        con.close();
        
        return resultado;
    }
}
